package com.dubbo.service.business.placeOrder;

import com.dubbo.domain.Goods;
import com.dubbo.domain.User;
import com.dubbo.service.base.BaseService;

import java.util.Map;

/**
 * 下单Service
 * @author wujunyuan
 * @date 2018年12月15日  上午11:13:46
 */
public interface PlaceOrderService extends BaseService<Goods> {

	/**
	 * 获取下单首页一级系列数据
	 * @author wujunyuan
	 * @date 2018年12月26日  下午5:20:42
	 * @param user
	 * @param pageStart
	 * @param pageTotal
	 * @return
	 */
	Map<String, Object> findCategoryPlaceOrder();
	
	/**
	 * 根据一级系列id获取下单首页二级系列数据
	 * @author wujunyuan
	 * @date 2019年1月14日  上午10:34:17
	 * @param categoryId
	 * @return
	 */
	Map<String,Object> findCategoryPlaceOrder2(Long categoryId);
	
	/**
	 * 获取下单首页商品数据
	 * @author wujunyuan
	 * @date 2018年12月26日  下午5:21:42
	 * @param request
	 * @param categoryId
	 * @param pageTotal 
	 * @param pageStart 
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> findGoodsPlaceOrder(User user, Long categoryId, Long pageStart, Long pageTotal);
	
	/**
	 * 添加购物车
	 * @author wujunyuan
	 * @date 2018年12月17日  下午2:33:42
	 * @param json 购物车json数据
	 * @param userId 用户id
	 * @return
	 */
	public Map<String,Object> addShoppingcart(String json, String userId);

	/**
	 * 查看购物车列表
	 * @author wujunyuan
	 * @date 2018年12月17日  下午3:20:21
	 * @param pageStart
	 * @param pageTotal
	 * @param userId 用户id
	 * @return
	 */
	Map<String, Object> findShoppingcartList(Long pageStart, Long pageTotal, String userId);
	
	/**
	 * 修改购物车商品数量
	 * @author wujunyuan
	 * @date 2018年12月20日  下午2:37:26
	 * @param request
	 * @param shoppingcartId 购物车id
	 * @param count 商品数量
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> editShoppingcarCount(Long shoppingcartId, Integer count);

	/**
	 * 移除出购物车
	 * @author wujunyuan
	 * @date 2018年12月17日  下午4:22:58
	 * @param ids 购物车id数组
	 * @return
	 */
	Map<String, Object> removeShoppingcart(User user, String idJson);

	/**
	 * 结算
	 * @author wujunyuan
	 * @date 2018年12月19日  下午2:18:43
	 * @param user
	 * @return
	 */
	Map<String, Object> settlement(User user);
	
	/**
	 * 提交订单
	 * @author wujunyuan
	 * @date 2018年12月18日  上午10:00:47
	 * @param request
	 * @param orderJson 订单json数据
	 * @param shoppingcartIds 购物车id数组
	 * @param electricianId 关联电工id
	 * @param linkUserId 
	 * @return 
	 * @throws Exception
	 */
	Map<String, Object> submitOrder(User user, String orderJson, String shoppingcartIds, String shoppingJson, String electricianId) throws Exception;



	/**
	 * 选择支付方式
	 * @author wujunyuan
	 * @date 2018年12月20日  上午10:28:18
	 * @param payType
	 * @return
	 */
	Map<String, Object> choosePayment(String orderNum, Integer payType);
	/**
	 * 统计购物车商品数量和金额
	 * @author chenluqiang
	 * @date 2019年3月19日 下午4:50:14 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> countShoppingCartMoney(User user);

}
